package com.eascs.admin.dataType.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.eascs.admin.dataType.entity.O2ODataTypeChildEntity;
import com.eascs.admin.dataType.entity.O2ODataTypeEntity;
import com.eascs.admin.dataType.service.O2ODataTypeService;
import com.eascs.admin.dataType.vo.O2ODataTypeChildForm;
import com.eascs.admin.dataType.vo.O2ODataTypeForm;
import com.eascs.admin.o2o.internal.util.StatusContexts;
import com.eascs.site.controller.BaseRestController;
import com.eascs.site.view.BaseRestResult;
import com.eascs.site.view.HtmlRestResult;
import com.eascs.site.view.ViewContext;

@RestController
@RequestMapping("/rDataType")
public class O2ODataTypeRestController extends BaseRestController {

	@Autowired
	O2ODataTypeService o2ODataTypeService;
	
	@RequestMapping("/editDtHtml")
	public BaseRestResult<String> editDdHtml(String dtId) {
		O2ODataTypeEntity o2ODateTypeEntity = o2ODataTypeService.findO2ODataTypeById(dtId);
		ViewContext.put("vo", o2ODateTypeEntity);
		return HtmlRestResult.popHtmlFragment("datatype/editDt");
	}

	@RequestMapping("/editdtcHtml")
	public BaseRestResult<String> editHtml(String dtChildId) {
		O2ODataTypeChildEntity o2ODataTypeChildEntity = o2ODataTypeService.findO2ODataTypeChildById(dtChildId);
		ViewContext.put("vo", o2ODataTypeChildEntity);
		if(o2ODataTypeChildEntity!=null){
			O2ODataTypeEntity o2ODateTypeEntity = o2ODataTypeService.findO2ODataTypeById(o2ODataTypeChildEntity.getDtId());
			ViewContext.put("o2ODateTypeEntity", o2ODateTypeEntity);
		}else{
			ViewContext.put("o2ODateTypeEntity", null);
		}
		return HtmlRestResult.popHtmlFragment("datatype/editdtc");
	}

	@RequestMapping("/adddtcHtml")
	public BaseRestResult<String> addHtml(String dtId) {
		
		O2ODataTypeEntity o2ODateTypeEntity = o2ODataTypeService.findO2ODataTypeById(dtId);
		ViewContext.put("o2ODateTypeEntity", o2ODateTypeEntity);
		
		return HtmlRestResult.popHtmlFragment("datatype/adddtc");
	}

	@RequestMapping("/addDtHtml")
	public BaseRestResult<String> addDtHtml() {
		return HtmlRestResult.popHtmlFragment("datatype/addDt");
	}

	@RequestMapping("/editDt")
	public BaseRestResult<String> editDt(O2ODataTypeForm form) {
		O2ODataTypeEntity sourceEntity = o2ODataTypeService.findO2ODataTypeByCode(form.getDtCode());
		if (null != sourceEntity) {
			if (!sourceEntity.getDtId().equals(form.getDtId())) {
				return BaseRestResult.warn("资料类型CODE已被使用");
			}
		}
		O2ODataTypeEntity o2ODataTypeEntity = new O2ODataTypeEntity();
		o2ODataTypeEntity.setDtCode(form.getDtCode());
		o2ODataTypeEntity.setDtName(form.getDtName());
		o2ODataTypeEntity.setDtOrder(form.getDtOrder());
		o2ODataTypeEntity.setDtId(form.getDtId());
		o2ODataTypeEntity.setIsLock(StatusContexts.O2O_NO);
		int i = o2ODataTypeService.updateO2ODataTypeById(o2ODataTypeEntity);
		if (i > 0) {
			return BaseRestResult.info("修改成功").andRefresh();
		} else {
			return BaseRestResult.warn("修改失败，请稍后重试");
		}
	}

	@RequestMapping("/editdtc")
	public BaseRestResult<String> edit(O2ODataTypeChildForm o2ODataTypeChildForm) {
		O2ODataTypeChildEntity sourceEntity = o2ODataTypeService.findO2ODataTypeChildByCode(o2ODataTypeChildForm.getDtChildCode(), o2ODataTypeChildForm.getDtId());
		if (null != sourceEntity){
			if (!o2ODataTypeChildForm.getDtId().equals(sourceEntity.getDtId())) {
				return BaseRestResult.warn("常量CODE已被使用");
			}
		}
		O2ODataTypeChildEntity o2ODataTypeChildEntity = new O2ODataTypeChildEntity();
		o2ODataTypeChildEntity.setDtChildId(o2ODataTypeChildForm.getDtChildId());
		o2ODataTypeChildEntity.setDtChildCode(o2ODataTypeChildForm.getDtChildCode());
		o2ODataTypeChildEntity.setDtChildDesc(o2ODataTypeChildForm.getDtChildDesc());
		o2ODataTypeChildEntity.setDtId(o2ODataTypeChildForm.getDtId());
		o2ODataTypeChildEntity.setDtChildName(o2ODataTypeChildForm.getDtChildName());
		o2ODataTypeChildEntity.setDtChildOrder(o2ODataTypeChildForm.getDtChildOrder());
		o2ODataTypeChildEntity.setDtChildFormat(o2ODataTypeChildForm.getDtChildFormat());
		o2ODataTypeChildEntity.setIsLock(StatusContexts.O2O_NO);
		int i = o2ODataTypeService.updateO2ODataTypeChildById(o2ODataTypeChildEntity);
		if (i > 0) {
			return BaseRestResult.info("修改成功").andRefresh();
		} else {
			return BaseRestResult.warn("修改失败，请稍后重试");
		}
	}

	
	@RequestMapping("/deletedtc")
	public BaseRestResult<String> deletedtc(String dtChildId) {
		O2ODataTypeChildEntity sourceEntity = o2ODataTypeService.findO2ODataTypeChildById(dtChildId);
		if (null != sourceEntity){
			sourceEntity.setIsLock(StatusContexts.O2O_YES);
		}else{
			return BaseRestResult.warn("要删除的内容不存在，请稍后重试");
		}
		
		int i = o2ODataTypeService.updateO2ODataTypeChildById(sourceEntity);
		if (i > 0) {
			return BaseRestResult.info("删除成功").andRefresh();
		} else {
			return BaseRestResult.warn("删除失败，请稍后重试");
		}
	}
	
	@RequestMapping("/adddtc")
	public BaseRestResult<String> add(O2ODataTypeChildForm o2ODataTypeChildForm) {
		O2ODataTypeChildEntity sourceEntity = o2ODataTypeService.findO2ODataTypeChildByCode(o2ODataTypeChildForm.getDtChildCode(), o2ODataTypeChildForm.getDtId());
		if (null != sourceEntity){
			return BaseRestResult.warn("常量CODE已被使用");
		}
		O2ODataTypeChildEntity o2ODataTypeChildEntity = new O2ODataTypeChildEntity();
		o2ODataTypeChildEntity.setDtChildCode(o2ODataTypeChildForm.getDtChildCode());
		o2ODataTypeChildEntity.setDtChildDesc(o2ODataTypeChildForm.getDtChildDesc());
		o2ODataTypeChildEntity.setDtId(o2ODataTypeChildForm.getDtId());
		o2ODataTypeChildEntity.setDtChildName(o2ODataTypeChildForm.getDtChildName());
		o2ODataTypeChildEntity.setDtChildOrder(o2ODataTypeChildForm.getDtChildOrder());
		o2ODataTypeChildEntity.setDtChildFormat(o2ODataTypeChildForm.getDtChildFormat());
		o2ODataTypeChildEntity.setIsLock(StatusContexts.O2O_NO);
		int i = o2ODataTypeService.saveO2ODataTypeChild(o2ODataTypeChildEntity);
		if (i > 0) {
			return BaseRestResult.info("添加成功").andRefresh();
		} else {
			return BaseRestResult.warn("添加失败，请稍后重试");
		}
	}

	@RequestMapping("/deleteDt")
	public BaseRestResult<String> deleteDt(String dtId) {
		O2ODataTypeEntity sourceEntity = o2ODataTypeService.findO2ODataTypeById(dtId);
		if (null != sourceEntity) {
			sourceEntity.setIsLock(StatusContexts.O2O_YES);
		}else{
			return BaseRestResult.warn("要删除的内容不存在，请稍后重试");
		}
	
		int i = o2ODataTypeService.updateO2ODataTypeById(sourceEntity);
		if (i > 0) {
			return BaseRestResult.info("删除成功").andRefresh();
		} else {
			return BaseRestResult.warn("删除失败，请稍后重试");
		}
	}
	
	@RequestMapping("/addDt")
	public BaseRestResult<String> addDd(O2ODataTypeForm form) {
		O2ODataTypeEntity sourceEntity = o2ODataTypeService.findO2ODataTypeByCode(form.getDtCode());
		if (null != sourceEntity) {
				return BaseRestResult.warn("资料类型CODE已被使用");
		}
		O2ODataTypeEntity o2ODataTypeEntity = new O2ODataTypeEntity();
		o2ODataTypeEntity.setDtCode(form.getDtCode());
		o2ODataTypeEntity.setDtName(form.getDtName());
		o2ODataTypeEntity.setDtOrder(form.getDtOrder());
		o2ODataTypeEntity.setIsLock(StatusContexts.O2O_NO);
		int i = o2ODataTypeService.saveO2ODataType(o2ODataTypeEntity);
		if (i > 0) {
			return BaseRestResult.info("添加成功").andRedirect("/dataType/index");
		} else {
			return BaseRestResult.warn("添加失败，请稍后重试");
		}
	}
}
